有时候会需要利用模板生成电子邮件。比如说,如果有类似下面的数据库表:
db.define_table('person',Field('name'))
当你相对这个表里面的每一个用户都发一个邮件,邮件内容记录在一个名叫“message.html”的文件中:
Dear{{=person.name}},
Youhavewonthesecondprize,asetofsteakknives.
你可以利用下面这段代码达到以上的目的:
>>>fromgluon.toolimportMail
>>>mail=Mail(globals())
>>>mail.settings.server='smtp.gmail.com:587'
>>>mail.settings.sender='...@somewhere.com'
>>>mail.settings.login=Noneor'username:password'
>>>for person in db(db.person.id>0).select():
>>> context = dict(person=person)
>>> message = response.renaer('message.html', context)
>>> mail.send(to=['who@example.com'],
>>> subject='None',
>>> message=message)
以上这段代码中,大部分的工作是在下面这个语句中完成的:
response.render('message.html',context)
这个函数会根据在context中设定的条件将“file.html”进行渲染,然后将渲染完成的字符串返回。至于context,它是一个字典,里面存的是可以供模板访问的变量。
同样的原理也可以用来发送短信或者其他给予模板的信息。